/**
* @Description Fixed Table
* @author V.Yao  
* @date 2014-12-10
* @version 1.0.0.0
**/

; (function () {
    $.fn.fixedTable = function (options) {
        $.fn.fixedTable.defaults = {
            obj: this			//Table
		   , isfixedhead: true    //是否设置表头固定
		   , fixedclass: 'fixedwrap'    //表头固定样式名
        };
        var o = $.extend({}, $.fn.fixedTable.defaults, options);
        var $obj = $(o.obj);
        var $thead = $obj.find('thead');
        var $tbody = $obj.find('tbody');

        if (o.isfixedhead) {
            _setThead();
            $thead.find('th').each(function (idx, el) {
                var _content = $('<div class="' + o.fixedclass + '">').html($(el).html());
                $(el).html(_content);
            })
            _fixedThead();
        }

        //设置表头尺寸
        function _setThead() {
            $thead.find('th').each(function (idx, el) {
                $(el).css({
                    width: $(el).outerWidth()
                    ,height: $(el).outerHeight()
					, 'background-color': '#f2f2f2'
					, 'vertical-align': 'top'
                    , 'line-height': '20px'
                })
            })
        };
        //设置表头固定
        function _fixedThead() {
            $thead.find('.' + o.fixedclass).each(function (idx, el) {
                $(this).css({
                    width: $(this).parent().outerWidth()+1
                   , height: $(this).parent().outerHeight()
                   , 'line-height': '20px'
                   , position: 'absolute'
                   , 'z-index': '100'
                   , margin: function () {
                       return -parseInt($(this).parent().css('padding-top'));
                   }
                   , padding: function () {
                       var _padding = $(this).height() - $(this).parent().height();
                       if (_padding< 18) {
                          
                           return _padding / 2;
                       } else {
                            return '12px 8px'
                       }
                   }
                   , 'background-color': '#f2f2f2'
                   , 'border': '1px solid #ddd'
                   , left: $(el).offset().left-1
                   , top: function () {
                       return $(this).position().top-1
                   }
                });
                
                $(this).has('input[type=checkbox]').css({
                    padding: '8px'
                })
            })
        }

        $obj.resize(function () {
            _setThead();
            $thead.find('th').each(function (idx, el) {
                var _content = $(el).html();
                $(el).html(_content);
            })
            $thead.find('.' + o.fixedclass).each(function (idx, el) {
                $(this).css({
                    width: $(el).parent().outerWidth()+1
                    , left: $(el).parent().offset().left + 8
                    , top: function () {
                        return $(el).parent().position().top +8
                    }
                })
            })
        })
    }
})(jQuery)